#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @FileName  :test.py
# @Time      :2024/4/27
# @Author    :coding
# @email     :
from multiprocessing import Pool

from DrissionPage import ChromiumPage
from DataRecorder import Recorder
import time
import random
import os
import datetime
from util import mongo_manager
douyin_users = mongo_manager('douyin_users',db= 'cl_data')



def countdown(n):
    for i in range(n, 0, -1):
        print(f'\r倒计时{i}秒', end='')  # \r让光标回到行首 ，end=''--结束符为空，即不换行
        time.sleep(1)  # 让程序等待1秒
    else:
        print('\r倒计时结束')


def sign_in():
    sign_in_page = ChromiumPage()
    sign_in_page.get('https://www.douyin.com/?recommend=1')
    print('请扫码登录')
    countdown(30)


def delete_file(file_path):
    """用于删除初始化excel文件"""
    # 检查文件是否存在
    if os.path.exists(file_path):
        # 删除文件
        os.remove(file_path)
        print(f"已删除初始化excel文件：{file_path}")
    else:
        print(f"文件不存在：{file_path} ")


def run(keyword = '杨幂'):

    url = f'https://www.douyin.com/search/{keyword}?type=user'
    # page.clear_cache()
    # page.refresh()
    time.sleep(30)
    print('开始搜索关键词：', keyword)
    page.listen.start('https://www.douyin.com/aweme/v1/web/discover/search/', method='GET')  # 开始监听，指定获取包含该文本的数据包
    page.get(url)
    # 生成一个随机时间
    random_time = random.uniform(2, 3)
    # 下滑页面，随机等待
    page.scroll.to_bottom()
    time.sleep(random_time)
    # 下滑页面，随机等待
    page.scroll.to_bottom()
    time.sleep(random_time)

    res = page.listen.wait(timeout=5)  # 等待并获取一个数据包

    try:
        # json_data和浏览器的开发者工区中response一样
        json_data = res.response.body
        user_list = json_data['user_list']
        # 提取视频信息  # videos是所有视频列表
    except Exception as e:
        print('没有监听到更多视频 等待十秒',e)
        time.sleep(10)
        res = page.listen.wait(timeout=5)  # 等待并获取一个数据包
        try:
            json_data = res.response.body
            user_list = json_data['user_list']
        except  Exception as e:
            print('没有监听到更多视频 ', e)

            return None
    for user in user_list[:1]:# 只取第一个
        print(user)
        # 作者id
        uid = user['user_info']['uid']
        # 作者名称
        nickname =user['user_info']['nickname']
        # sec_uid
        sec_uid =user['user_info']['sec_uid']
        # 粉丝
        follower_count = user['user_info']['follower_count']
        # 获赞
        total_favorited = user['user_info']['total_favorited']
        # 类别
        versatile_display = user['user_info']['versatile_display']
        print(nickname, uid, sec_uid, follower_count, total_favorited, versatile_display)
        info = {'关键词': keyword,'作者名称': nickname,'作者粉丝数': follower_count,'sec_uid': sec_uid,
                '作者主页地址': f'https://www.douyin.com/user/{sec_uid}','作者ID': uid,
                'follower_count': follower_count, 'total_favorited': total_favorited,
                'versatile_display': versatile_display }
        try:
            info["_id"] = info['作者ID']
            douyin_users.insertOne(info)
        except Exception as e:
            print(e)



def main():
    keywords=[
        # '疯狂小杨哥', '刘德华', '陈翔六点半', '刘畊宏',
        #       '陈赫', '广东夫妇',
        #       '涂磊', '祝晓晗', '李子柒',
        #       '一禅小和尚', '『唐艺', 'Dear-迪丽热巴',
        #       'GEM鄧紫棋', '张大仙', '开心锤锤', '澎湃新闻',
        #   '张国伟_国家伟大', '贾乃亮',
        #       '朱两只吖', '一条小团团0v', '哇喔',
        #       '陈三废姐弟',
        # '天元邓刚', '猴哥说车',
        #       'MR-白冰',
        # '姜十七麻辣德子', '我是田姥姥',
        #        "高火火",
        # '疯产姐妹','郭聪明',
        #       '潘姥姥', '关晓彤', "'会说话的刘二豆”", '天津一家人',
        #       '多余和毛毛姐', '彭十六elf', '虎哥说车',
        #      '莫邪', '光明日报',
        #       'papi酱', 'AG超玩会梦泪',
        #       '董先生', '唐唐', '梅尼耶',  '冯提莫',
        #      '痞幼', '白鹿my', '贤于葛格', '李诗雨',
        #        '叶公子', '程十安an', '西木西木', '家味美食',
        #       '阿星and阿奇','我是不白吃', '金毛蛋黄','小品一家人', '小橙子', '医路向前巍子',
        #       '布衣探案', '新闻姐','乡 愁', '马力拍档','小橙子先生',  '无穷小亮的科普日常', '河马君',
        #       '原来是舅先生', '侠客红尘', 'wuli哥哥','大表哥Vlog', '办公室小野', '陈大白', '七阿姨柒',
        #       '金毛路虎一家人', '莉哥o', '青岛大姨张大霞', '棋彤好物', '许华升', '蛋白.',
        # '章鱼呆呆',
        #      '大师说车', '代古拉k','奶龙', '维维啊', '胖超说艺考', '这不科学啊', '七舅脑爷',
        #       '飞跃上线', '设计师阿爽', '李蠕蠕', '曹野说车',
        #       '陶白白Sensei', '朱容君-兔子牙2覇真', '老外克里斯', '聂小雨', 'M哥', '料理猫王',
        #       '扬叔来了', '你的子笺子凛', '普陀山小帅',  '骆王宇', '孝警阿特', '高小健建萌芽熊',
        #       '科学旅行号', '宸荨樱桃', '牛爱芳的小春花', '我是张凯毅', '懒饭', '锅盖wer', '二百者也',
        #       '郭大侠.',  '柯铭', '@小敏', '车坛老炮儿', '哦吼小闪电',  '苓妹妹吖', '何丹彤', '朱梓骁',
        #       '大聪明和魏乐乐影院', '呆妹儿小霸王', '小刚学长', '冬冬和', '商业小纸条rea', '大圆哥',
        #       '张小云和阿玲', '洋佳酱',  '小黑诸鸣', '爆胎草莓粥', '蓝一游戏', '章若楠', '一只笨鼠',
        #       '李永乐老师', '包子和饺子和肉丸子', '蓝胖子不胖',  '狗子队长★', '陈意礼', '旭旭宝宝',
        #       '不羡仙(最佳男友)', '倪海杉', 'UNIQ-王一博', '车哥测评', '科技公元', '无敌灏克',
        #       '抖音广告助手', '麦小登','特别乌啦啦', '美洋MEIYANG', '聪哥说车',  '花一村', '刘芳形体礼仪',
        #       '旺仔小乔', '末那大叔', 'NBA', '--丫丫', '带你吃瓜', '张离谱Dreams', '养生堂',
        #       '南阳网',

              # '直男财经', '刘媛媛', '孙俪工作室', 'Thurman猫一杯', '果然', '林晚晚', '张同学',
              # '魔术师林剑伟',  '瑶一瑶小肉包', '爆笑三江锅',
              # '海扬', '刘半仙解说',  '芒芒生活圈', '林颜', '草莓果冻', '博哥威武', '小贝饿了素', '老撕鸡',
              # '四平警事', '付笛生','青蛙公主爱凌', '蔡萝莉二', '白小白。', '张若宇', '放扬的心心',
              # '我是你的cc阿', '狙击手麦克', '嘉之派', '欧陽娜娜Nana', '刀小刀sama', '小霸王', '仙鹤大叔张文鹤',
              # '吕小厨爱美食', '小麦', '戴羽彤。','平和', '破产姐弟', '朱铁雄',
              # '罗休休真实', '李炮儿','钟婷x', '家常美食-白糖',
        # '蜀中桃子姐',  '一笑倾城，',
        '表哥(覃进展)', 'Aleks Kost', '黑码科技', '熬夜视界', '可爱的Anna姐',
        '是个泡泡', '潘潘子',
              '湖远行', '浙有正能量', '周周啊', '玩车女神',
              '噗噗叽叽', '网不红萌叔Joey难言言(不看美女版)', '腊月小九',
              '小猫咪吖喵小兔漫画(画师七七)' ]
    keywords2 = [
 #        '突击手蜜獾',
 # '梗姐姐',
 # '罐头瓶子在荷兰',
 # '樊小慧儿',
 # '张予曦',
 # '逆袭丁姐',
 # '小伶玩具',
 # '小豆花',
 # '大',
 # '路边小郎君',
 # '学好姐姐四',
 # '力哥影視',
 # '冷少',
 # '叮叮喵',
 # '垫底辣孩',
 # '伯乐说',
 # '北京小伙',
 # '爆笑两姐妹',
 # '糖一',
 # '韩',
 # '小宇菇菇',
 # '名郑言顺',
 # '豆豆',
 # '韩饭饭',
 # '观察者网',
 # '江寻千',
 # '东北小黑姐',
 # '郭德纲',
 # '阿泽',
 # '陳婷',
 # '在下铁头阿彪',
 # '方琼',
 # '僵小鱼',
 # '毛光光',
 # '埃尼斯',
 # '忠哥',
 # '爱做菜',
 # '只穿高跟鞋的汪奶奶',
 # '疏疏',
 # '凌云义',
 # '山村小杰',
 # '天成说游',
 # '二里清风',
 # '真探唐仁杰',
 # '厨子与驴',
 # '忆涵游戏解说',
 # '青波',
 # '凯诺梦露夫妇',
 # '温精灵',
 # '比尔盖南',
 # '柚子',
 # '黄洁怡',
 # '我是大佬綽伶苷鑊且',
 '老饭骨',
 '大野蜜探',
 '混血米娜',
 '美丽浙江',
 '小帅家的大狼狗们',
 '俞敏洪三千金',
 '阿雅小厨',
 '王大毛呀',
 '临界十缨',
 '琪怪儿',
 '欢乐视界',
 '百姓关注',
 '伏拉夫',
 '可爱的',
 '郑恺',
 '王小玮',
 '王心凌',
 '冲浪达人阿怡',
 '婉儿的宝藏姐姐',
 '周小闹',
 '河南都市报道',
 '可爱屁',
 '周大爷不服老',
 '凤凰网',
 '奔奔解说',
 '瑜伽老师',
 '晨妍',
 '东南军情',
 '小柔',
 '飞狗',
 '阿阳精分了',
 '刘宇',
 '王者荣耀',
 '猫总白一航',
 '星座狗联盟',
 '我是晴天',
 '经济日报',
 '郭嘉峰',
 '猪小',
 '游小浪',
 '鲤鱼',
 '大掌柜夫妇',
 '费启鸣',
 '千寻视野',
 '果冻是只可爱猫',
 '豫乡闲人',
 '小鱼视频',
 '小草千',
 '东北雨姐',
 '豪哥哥澈',
 '王七叶',
 '大魔王呸',
 '勾魂公狒狒',
 '混知',
 '刘一朵',
 '玲爷',
 '火龙果讲电影',
 '大河报',
 '尊宝爸爸',
 '夏妈厨房',
 '李沁',
 '江苏卫视',
 '大圆子',
 '脱缰凯',
 '不会剪',
 '新闻快车',
 '阿三解说',
 '天才小火龙',
 '崔磊',
 '主持人王芳',
 '安英',
 '中国火箭军',
 '海来阿木',
 '菲灵仙子',
 '小武',
 '芮丹尼',
 '海报新闻',
 '花姐',
 '红斌',
 '范丞丞',
 '陈小油',
 '这是',
 '遇见她',
 '电影茶啊二中',
 '密子君王铁锤',
 '南京广播电视台',
 '王蓝莓',
 '许君聪',
 '周冬雨',
 '吴岱林',
 '小小',
 '慧慧周']
    keywords3 = [
        # '迪老诗',
 # '夏同学',
 # '尬演七段',
 # '大头大头下雨不愁',
 # '张之助竟然',
 # '小阿枫',
 # '杜子建',
 # '浩杰来了',
 # '教体育的雷老师',
 # '唐梓',
 # '张轶程',
 # '氧化菊',
 # '格斗好物',
 # '袁姗姗',
 # '搭搭',
 # '董赤赤',
 # '李玉刚',
 # '子航核电站',
 # '不求人',
 # '吃货老外铁蛋儿',
 # '幸福一家人周甜丽',
 # '路怡',
 # '彦儿',
 # '王花花的厨房历险记',
 # '云上南阳',
 # '唐人小哥',
 # '仙女酵母',
 # '老丈人说车',
 # '尿尿是只猫',
 # '一切为了群众',
 # '王玉萌',
 # '渣渣辉',
 # '国家反诈中心',
 # '王豆豆爱逗逗儿',
 # '喳喳呱',
 # '陆仙人',
 # '潇潇学姐',
 # '张林超',
 # '杨晨曦',
 # '中国消防',
 # '彩虹夫妇',
 # '松松和二毛',
 # '一木一叶造景',
 # '小明正能量',
 # '罗凤魁',
 # '河南民生频道大参考',
 # '我是机灵姐',
 # '李一桐',
 # '艺星最帅',
 # '心中有术',
 # '张艺杰',
 # '轮胎粑粑',
 # '胜仔',
 # '雪总有氧健身运动',
 # '翔翔大作战',
 # '小飞哥',
 # '李雪琴',
 # '星有野',
 # '辛九儿',
 # '百变小飞',
 # '泰蜜',
 # '乱剪公主',
 # '每日热搜',
 # '黄小明',
 # '匹夫透心凉',
 # '迷你世界',
 # '王孟南台球教学',
 # '他是子豪',
 # '李波中式单口秀',
 # '王不染',
 # '子笺子凛',
 # '幸运星追剧',
 # '猫眼电影',
 # '姚姚不是',
 # '高芋芋',
 # '随心追剧',
 # '饭思思',
 # '三只羊网络',
 # '老吴很帅',
 # '刘大师',
 # '你的欲梦',
 # '伊拾七西',
 # '王丽萍',
 # '多肉小盆友',
 # '韩秀云讲经济',
 # '刘庸干净又卫生',
 # '三石的一家老小',
 # '李叔凡',
 # '心血管王医生',
 # '梁笑笑',
 # '雷军',
 # '樱桃熟了',
 # '大能',
 # '东北人',
 # '电商小助手',
 # '醒醒吧张律',
 # '撩妹大队',
 # '杀猪饲料',

 '伯妮夫妇',
 '一杯美式',
 '小狮子赛几',
 '草莓朵朵',
 '王大艺',
 '政知道',
 '盟主安全官',
 '老四的快乐生活第',
 '今夜时分',
 '天下故事汇',
 '高泽宇',
 '小然哥',
 '温江生产队影视',
 '解忧大队',
 '伊博',
 '丁公子',
 '小五哥哥',
 '语文山水',
 '三根葱',
 '臻臻',
 '疯狂大杨哥',
 '名侦探小宇',
 '金晨',
 '大司马解说',
 '孙耀威',
 '夏叔厨房',
        '优酷小剧场',
        '芒果',
        '一个人的莎士比亚',
        '呼叫网管',
        '泥可松',
        '花西子官方旗舰店',
        '桂圆子手作坊',
        '小潮院长',
        '丁郑美子',
        '语柠',
        '原来是兄长大人',
        '王乃迎',
        '阿巳与小铃铛',
        '卓仕琳',
        '张大大',
        '四川日报',
        '刘涛',
        '蓝光乐队',
        '中国青年网',
        '旬猫',
        '咬米',
        '叶枫',
        '小叮当的一家',
    ]
    for keyword in keywords3:
        if len(keyword)>1:
            if keyword not in keywords:
                run(keyword)

if __name__ == '__main__':
    print()
    # # 1、登录，第2次运行可以注释掉这一步骤
    # sign_in()
    # page = ChromiumPage()
    # main()
    # page.close()
    # douyin_users.close()
    with open('抖音粉丝排行.txt', 'r', encoding='utf-8') as f:
        lines = f.readlines()

    # print(lines)
    for line in lines:
        # print(line.strip())
        try:
            douyin_users.insertOne({'_id': line.strip(),'作者主页地址': line.strip()})
        except Exception as e:
            print(e)